/*
 * @Author: yuqy
 * @Date: 2022-11-01 10:48:23
 * @LastEditors: yuqy
 * @LastEditTime: 2023-10-18 15:46:39
 * @Descripttion: -
 */

/**
 * @name: 声网视频采集参数列表
 * @msg: 
 * @return {*}
 */
/* eslint-disable */
const videoEncodeList = [
    // {
    //     label: '4kp_2', width: 4096, height: 2160, fps: 60, Kbps: 4780 // 最高档
    // },
    // {
    //     label: '4kp_1', width: 2560, height: 1440, fps: 60, Kbps: 4780 // 最高档
    // },
    {
        label: '1080p_5', width: 1920, height: 1080, fps: 60, Kbps: 4780 // 最高档
    },
    {
        label: '1080p_3', width: 1920, height: 1080, fps: 30, Kbps: 3150
    },
    {
        label: '1080p_2', width: 1920, height: 1080, fps: 30, Kbps: 3000
    },
    {
        label: '1080p_1', width: 1920, height: 1080, fps: 15, Kbps: 2080
    },
    {
        label: '720p_2', width: 1280, height: 720, fps: 30, Kbps: 2000
    },
    {
        label: '720p_3', width: 1280, height: 720, fps: 30, Kbps: 1710
    },
    {
        label: '720p_1', width: 1280, height: 720, fps: 15, Kbps: 1130
    },
    {
        label: '720p_6', width: 960, height: 720, fps: 30, Kbps: 1380
    },
    {
        label: '720p_5', width: 960, height: 720, fps: 15, Kbps: 910
    },
    {
        label: '480p', width: 640, height: 480, fps: 15, Kbps: 500
    },
    {
        label: '360p', width: 640, height: 360, fps: 15, Kbps: 400
    },
    {
        label: '240p', width: 320, height: 240, fps: 15, Kbps: 200
    },
    {
        label: '180p', width: 320, height: 180, fps: 15, Kbps: 140
    }
]
/**
 * @name: 声网音频采集参数
 * @msg: 
 * @return {*}
 */
const audioEncodeList = [
    {
        label: '48 kHz 双声道，编码码率约 192 Kbps 最高档', // 最高档
        value: 'high_quality_stereo'
    },
    {
        label: '48 kHz 单声道，编码码率约 128 Kbps',
        value: 'high_quality'
    },
    {
        label: '48 kHz 双声道，编码码率约 64 Kbps',
        value: 'standard_stereo'
    },
    {
        label: '48 kHz 单声道，编码码率约 40 Kbps',
        value: 'music_standard'
    },
    {
        label: '32 kHz 单声道，编码码率约 24 Kbps',
        value: 'speech_standard'
    },
    {
        label: '16 kHz 单声道，编码码率约 24 Kbps',
        value: 'speech_low_quality'
    }
]

// "speech_low_quality": 16 kHz 采样率，单声道，编码码率约 24 Kbps <br />
// "speech_standard": 32 kHz 采样率，单声道，编码码率约 24 Kbps<br />
// "music_standard": 48 kHz 采样率，单声道，编码码率约 40 Kbps<br />
// "standard_stereo": 48 kHz 采样率，双声道，编码码率约 64 Kbps<br />
// "high_quality": 48 kHz 采样率，单声道， 编码码率约 128 Kbps<br />
// "high_quality_stereo": 48 kHz 采样率，双声道，编码码率约 192 Kbps


/**
 * @name: 声网音频采集参数 electron场景下
 * @msg: 
 * @return {*}
 */
const audioEncodeElectronList = [
    {
        label: '48 kHz 采样率，音乐编码，单声道，编码码率最大值为 64 Kbps', // 默认档
        value: 'AudioProfileDefault'
    },
    {
        label: '指定 32 kHz 采样率，语音编码，单声道，编码码率最大值为 18 Kbps',
        value: 'AudioProfileSpeechStandard'
    },
    {
        label: '指定 48 kHz 采样率，音乐编码，单声道，编码码率最大值为 64 Kbps。',
        value: 'AudioProfileMusicStandard'
    },
    {
        label: '指定 48 kHz 采样率，音乐编码，双声道，编码码率最大值为 80 Kbp',
        value: 'AudioProfileMusicStandardStereo'
    },
    {
        label: '指定 48 kHz 采样率，音乐编码，单声道，编码码率最大值为 96 Kbps',
        value: 'AudioProfileMusicHighQuality'
    },
    {
        label: '指定 48 kHz 采样率，音乐编码，双声道，编码码率最大值为 128 Kbps',
        value: 'AudioProfileMusicHighQualityStereo'
    },
    {
        label: '指定 16 kHz 采样率，语音编码，单声道，应用回声消除算法 AES',
        value: 'AudioProfileIot'
    },
]

// AudioProfileDefault 
// 0: 直播场景下：48 kHz 采样率，音乐编码，单声道，编码码率最大值为 64 Kbps。
// 通信场景下：Windows 平台：16 kHz 采样率，语音编码，单声道，编码码率最大值为 16 Kbps。

// AudioProfileSpeechStandard
// 1: 指定 32 kHz 采样率，语音编码，单声道，编码码率最大值为 18 Kbps。

// AudioProfileMusicStandard
// 2: 指定 48 kHz 采样率，音乐编码，单声道，编码码率最大值为 64 Kbps。

// AudioProfileMusicStandardStereo
// 3: 指定 48 kHz 采样率，音乐编码，双声道，编码码率最大值为 80 Kbps。

// AudioProfileMusicHighQuality
// 4: 指定 48 kHz 采样率，音乐编码，单声道，编码码率最大值为 96 Kbps。

// AudioProfileMusicHighQualityStereo
// 5: 指定 48 kHz 采样率，音乐编码，双声道，编码码率最大值为 128 Kbps。

// AudioProfileIot
// 6: 指定 16 kHz 采样率，语音编码，单声道，应用回声消除算法 AES。


/**
 * @name: 声网音频采集参数 electron场景下
 * @msg: 
 * @return {*}
 */
const exceptionErrorList = {
    '1001': {
        label: '视频采集帧率过低',
        msg: 'FRAMERATE INPUT TOO LOW',
        type: 'warning'
    },
    '1002': {
        label: '视频发送帧率过低',
        msg: 'FRAMERATE SENT_TOO_LOW',
        type: 'warning'
    },
    '1003': {
        label: '视频发送码率过低',
        msg: 'SEND VIDEO BITRATE TOO LOW',
        type: 'warning'
    },
    '1005': {
        label: '接收视频解码失败',
        msg: 'RECV_VIDEO DECODE FAILED',
        type: 'warning'
    },
    '2001': {
        label: '发送音量过低',
        msg: 'AUDIO INPUT LEVEL TOO LOW',
        type: 'warning'
    },
    '2002': {
        label: '接收音量过低',
        msg: 'AUDIO OUTPUT LEVEL TOO LOW',
        type: 'warning'
    },
    '2003': {
        label: '音频发送码率过低',
        msg: 'SEND AUDIO BITRATE TOO LOW',
        type: 'warning'
    },
    '2005': {
        label: '接收音频解码失败',
        msg: 'RECV AUDIO DECODE FAILED',
        type: 'error'
    },
    '3001': {
        label: '视频采集帧率恢复正常',
        msg: 'FRAMERATE INPUT TOO LOW RECOVER',
        type: 'success'
    },
    '3002': {
        label: '视频发送帧率恢复正常',
        msg: 'FRAMERATE SENT_TOO LOW RECOVER',
        type: 'success'
    },
    '3003': {
        label: '视频发送码率恢复正常',
        msg: 'SEND VIDEO BITRATE TOO LOW RECOVER',
        type: 'success'
    },
    '3005': {
        label: '接收视频解码恢复正常',
        msg: 'RECV VIDEO DECODE FAILED RECOVER',
        type: 'success'
    },
    '4001': {
        label: '发送音量恢复正常',
        msg: 'AUDIO INPUT LEVEL TOO LOW RECOVER',
        type: 'success'
    },
    '4002': {
        label: '接收音量恢复正常',
        msg: 'AUDIO OUTPUT LEVEL TOO LOW RECOVER',
        type: 'success'
    },
    '4003': {
        label: '音频发送码率恢复正常',
        msg: 'SEND AUDIO BITRATE TOO LOW RECOVER',
        type: 'success'
    },
    '4005': {
        label: '接收音频解码恢复正常',
        msg: 'FRAMERATE RECV AUDIO DECODE FAILED RECOVER',
        type: 'success'
    }
}

let highVideoEncoder = { // 主讲老师，采集视频的参数
    dimensions: {
        width: 1280, height: 720,
    },
    bitrate: 2000,
    frameRate: 30,
}
let lowVideoEncoder = { // 听讲老师采集视频参数
    dimensions: {
        width: 1280, height: 720,
    },
    bitrate: 1600,
    frameRate: 15
}
let audioEncoderConfig = 'speech_low_quality';

/**
 * @name: 获取选中的视频参数
 * @msg: 
 * @param {*} label
 * @return {*}
 */
const getVideoEncoder = (label) => {
    let current = videoEncodeList.find(s => s.label == label)
    if (current) {
        return {
            dimensions: {
                width: current.width, height: current.height,
            },
            bitrate: current.Kbps,
            frameRate: current.fps
        }
    }
    return lowVideoEncoder
}

export {
    audioEncoderConfig,
    lowVideoEncoder,
    highVideoEncoder,
    exceptionErrorList,
    audioEncodeElectronList,
    audioEncodeList,
    videoEncodeList,
    getVideoEncoder
}
